<!DOCTYPE html>
<html lang=en-us>
<head>
<meta charset=utf-8><meta content="text/html; charset=utf-8" http-equiv=Content-Type>
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
<link rel="stylesheet" href="xterm/xterm.css" />
<link rel="preload" href="fonts/ubuntu_mono.woff2" as="font" type="font/woff2" crossorigin="anonymous" />
<title>OCCT Draw Harness</title>
</head>
<body>

<h1>OCCT Draw Harness</h1>
<style>
@font-face {
  font-family: 'Ubuntu Mono';
  font-style: normal;
  font-weight: 400;
  src: url(fonts/ubuntu_mono.woff2) format('woff2');
  font-display: swap;
}
</style>

<div style="float: left; height: 100%; width: 100%">
<!-- <div id="termId" style="float: left; width: 800px"></div> -->
<!-- <div id="termId" style="float: left; width: 1200px; display: none"></div> -->
<div id="termId" style="float: left; width: 860px; display: none"></div>
<div style="float: left">
  <p style="font-family: Ubuntu Mono">&nbsp;
  <canvas id=occViewerCanvas oncontextmenu=event.preventDefault() tabindex=-1 style="border:0 none;background-color:#000" width="409" height="409"></canvas>
  </p>
</div>
</div>
<a href=".">Reset session</a>
<script type="text/javascript" src="xterm/xterm.js"    charset="utf-8"></script>
<!-- <script type="text/javascript" src="wasm32/DRAWEXE.js" charset="utf-8"></script> !-->
<!-- <script type="text/javascript" src="wasm32-pthread/DRAWEXE.js" charset="utf-8"></script> !-->
<script type="text/javascript" src="js/drawxterm.js"   charset="utf-8"></script>

<script>
createDRAWEXE().then ((theModule) =>
{
  //DRAWEXE.eval ("dversion");
  //DRAWEXE.terminalPasteScript ("dversion");
});
</script>

<h2></h2>


<h2>About this project</h2>

<p>This is an experimental work-in-progress web-page opening Draw Harness application from <a href="https://dev.opencascade.org">Open CASCADE Technology</a> (or OCCT)
directly in the browser as a <a href="https://en.wikipedia.org/wiki/WebAssembly">WebAssembly</a> module.</p>
<p>The page is generated from the following git repository (see project readme for more details):<br>
<a href="https://github.com/gkv311/occt-draw">https://github.com/gkv311/occt-draw</a></p>

<p>Draw Harness application is built as <a href="https://en.wikipedia.org/wiki/WebAssembly">WebAssembly</a> module,
from OCCT source code with statically linked <code>MODELING</code>, <code>XDE</code>, and <code>VISUALIZATION</code> plugins.</p>
<p>Although plugins are statically linked, you should use conventional command <code>pload</code> for loading specific commands
(use <code>pload ALL</code> to load all commands and <code>help</code> to list available commands).</p>

<p>Console interface is based on <a href="https://xtermjs.org/">xterm.js</a> library
and support an interactive input of Draw Harness commands as well as <a href="https://en.wikipedia.org/wiki/Tcl">Tcl</a> scripting.</p>

<p>OCCT 3D Viewer content can be seen within a dedicated WebGL canvas
(see commands <code>pload VISUALIZATION</code>, <code>vinit</code>, <code>vdisplay</code>, <code>vglinfo</code> and others;
shortcut <code>help v*</code> might be helpful to list most visualization commands).</p>

<img src="images/occt_draw_logo.png" alt="Open CASCADE Technology logo">

<h2>About Draw Harness</h2>

<p>Draw Harness is an open-source <a href="https://en.wikipedia.org/wiki/Tcl">Tcl</a> command interpreter
used to test and demonstrate <b>Open CASCADE Technology</b> (OCCT) modeling libraries.</p>

<p>Draw Harness provides a set of manually written Tcl commands utilizing OCCT functionality,
providing a natural environment for interactive input.</p>

<p>Draw Harness allows:</p>
<ul>
<li>Performing modeling operations from OCCT.</li>
<li>Performing import/export operations into STEP/IGES/glTF/STL file formats.</li>
<li>Displaying and interacting with models in 3D Viewer, as well as making screenshots.</li>
<li>Learning, evaluating, prototyping algorithms interactively - through command line input or available Tcl samples.</li>
<li>Scripting operations using Tcl language for reuse in interactive and non-interactive modes.</li>
<li>Automated non-regression testing of algorithms.</li>
<li>Extending with own commands through writing Draw Plugins.</li>
</ul>

<p>Draw Harness can be used on a wide range of platforms, including Windows, macOS, Linux,
and even directly in the browser as WebAssembly module (this project is a live DEMO of the latter)!</p>

<p>See also the <a href="https://dev.opencascade.org/doc/overview/html/occt_user_guides__test_harness.html">Draw Harness User Guide</a>.</p>

<h2>About Open CASCADE Technology</h2>
<p>Open CASCADE Technology (OCCT) is an open source full-scale 3D geometry library.
Striving to be one of the best free cad software kernels, OCCT is widely used for the development of specialized programs
dealing with the following engineering and mechanical domains:
3D modeling (CAD), manufacturing (CAM), numerical simulation (CAE), measurement equipment (CMM) and quality control (CAQ).
Since its publication in 1999 as an open source CAD software kernel,
OCCT has been successfully used in numerous projects ranging from building and construction to aerospace and automotive.</p>

<p>Please visit official site for more information:<br/>
<a href="https://dev.opencascade.org">https://dev.opencascade.org</a></p>

</body>
</html>
